package com.bdqn.controller;

import com.bdqn.pojo.SysRole;
import com.bdqn.pojo.SysUser;
import com.bdqn.service.SysRoleService;
import com.bdqn.service.SysUserService;
import com.bdqn.util.Constants;
import com.bdqn.util.PageSupport;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.annotation.Resource;
import java.util.List;

@Controller
@RequestMapping("/user")
public class SysUserController {
    private Logger logger=Logger.getLogger(SysUserController.class);
    @Resource
    private SysUserService sysUserService;
    @Resource
    private SysRoleService sysRoleService;

    @GetMapping("/list")
    public String getUserList(Model model, String queryRealName, Integer queryRoleId, @RequestParam(defaultValue = "1")Integer pageIndex){
        List<SysUser> userList = null;
        List<SysRole> sysRoles = null;
        try{
            //设置页面容量
            int pageSize = Constants.pageSize;
            //总数量
            int totalCount = sysUserService.getCount();
            //总页数
            PageSupport pages = new PageSupport();
            pages.setCurrentPageNo(pageIndex); // 设置当前页数
            pages.setPageSize(pageSize);       // 设置一页显示数据量
            pages.setTotalCount(totalCount);   // 设置总数据量
            int totalPageCount = pages.getTotalPageCount();

            if (pageIndex > totalPageCount){
                pageIndex = totalPageCount;
                throw new RuntimeException("页码不正确");
            }
            userList = sysUserService.List((pageIndex-1)*pageSize,pageSize,queryRealName,queryRoleId);
            sysRoles = sysRoleService.SysRoleList();
            model.addAttribute("userList",userList);  // 用户信息

            model.addAttribute("totalCount",pages.getTotalCount()); // 分页信息
            model.addAttribute("currentPageNo",pages.getPageNo());
            model.addAttribute("totalPageCount",pages.getTotalPageCount());

            model.addAttribute("queryRealName",queryRealName); // 查询条件回显
            model.addAttribute("queryRoleId",queryRoleId);
            model.addAttribute("roleList",sysRoles);

        }catch (Exception e){
            e.printStackTrace();
            return "redirect:/user/toSysError";
        }
        return "/sysUser/list";
    }

    @GetMapping("/add")
    public String toAdd(){
        return "/sysUser/add";
    }


    //12章示例1
//    @ResponseBody  // 让返回的内容原样输出到页面（通常用于ajax处理）
//    @GetMapping(value = "/userExist")
//    public String getAccountC(String account){
//        // 查询是否有相同的账号
//        int accountC = sysUserService.getAccountC(account);
//        Map<String,Integer> map = new HashMap<>();
//        if (accountC > 1){
//            map.put("exist", 1);
//        }else if (accountC == 0){
//            map.put("exist", 0);
//        }
//        return JSON.toJSONString(map);
//    }


    //12章示例3
//    @ResponseBody
//    @GetMapping(value = "{id}/view}")
//    public Object view(@PathVariable String id){
//        StringHttpMessageConverter s=null;
//        logger.debug("根据id查询用户详情id:"+id);
//        String sysUserJSON="";
//        if(null==id || "".equals(id)){
//            return "nodata";
//        }else {
//            try {
//                SysUser sysUser= sysUserService.getUserById(id);
//                sysUserJSON = JSON.toJSONString(sysUser);
//                logger.debug("JSON:"+sysUserJSON);
//            } catch (Exception e) {
//                e.printStackTrace();
//                return "failed";
//            }
//            return sysUserJSON;
//        }
//    }


    //12章示例9
//    @ResponseBody
//    @GetMapping(value = "/{id}/view")
//    public Object view(@PathVariable String id){
//        StringHttpMessageConverter s=null;
//        logger.debug("根据id查询用户详情id:"+id);
//        SysUser sysUser=null;
//        try {
//            sysUser= sysUserService.getUserById(id);
//            logger.debug("JSON:"+sysUser);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return "failed";
//        }
//        return sysUser;
//    }



}
